package com.cyzy.homework.service;

import com.cyzy.homework.dto.HomeworkDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 作业服务接口
 */
public interface HomeworkService {
    
    /**
     * 创建作业
     */
    HomeworkDTO createHomework(HomeworkDTO homeworkDTO);
    
    /**
     * 更新作业
     */
    HomeworkDTO updateHomework(Long id, HomeworkDTO homeworkDTO);
    
    /**
     * 删除作业
     */
    void deleteHomework(Long id, String teacherId);
    
    /**
     * 根据ID查询作业
     */
    HomeworkDTO getHomeworkById(Long id);
    
    /**
     * 获取所有作业列表（分页）
     */
    Page<HomeworkDTO> getAllHomeworks(Pageable pageable);
    
    /**
     * 根据班级ID查询作业列表
     */
    Page<HomeworkDTO> getHomeworksByClassId(String classId, Pageable pageable);
    
    /**
     * 根据教师ID查询作业列表
     */
    Page<HomeworkDTO> getHomeworksByTeacherId(String teacherId, Pageable pageable);
    
    /**
     * 根据班级ID和状态查询作业列表
     */
    Page<HomeworkDTO> getHomeworksByClassIdAndStatus(String classId, Integer status, Pageable pageable);
    
    /**
     * 根据教师ID和状态查询作业列表
     */
    Page<HomeworkDTO> getHomeworksByTeacherIdAndStatus(String teacherId, Integer status, Pageable pageable);
    
    /**
     * 发布作业
     */
    HomeworkDTO publishHomework(Long id, String teacherId);
    
    /**
     * 结束作业
     */
    HomeworkDTO endHomework(Long id, String teacherId);
    
    /**
     * 查询即将到期的作业
     */
    List<HomeworkDTO> getUpcomingDeadline(String classId, int days);
    
    /**
     * 查询已过期的作业
     */
    List<HomeworkDTO> getExpiredHomeworks(String classId);
    
    /**
     * 获取作业统计信息
     */
    HomeworkDTO getHomeworkStatistics(Long id);
    
    /**
     * 检查作业是否存在且属于指定教师
     */
    boolean isHomeworkBelongsToTeacher(Long id, String teacherId);
    
    /**
     * 检查作业是否存在且属于指定班级
     */
    boolean isHomeworkBelongsToClass(Long id, String classId);
}

